iT邦幫忙

2023 iThome 鐵人賽

DAY 1
0
Modern Web

轉行猴子碰碰車:網站開發一口酥系列 第 1

[更] CSS 是美化?外人問號?

  • 分享至 

  • xImage
  •  

【更】由於介面不熟悉,不小心更新掉了第一篇lol 只好重寫囉

本系列紀錄轉行仔我在學習過程的跌跌撞撞,作為好動廢圖粉專猴,雖然切版過也上研究所、實習,
曾經怎樣也無法進入程式運算思維邏輯的世界,範例都還行但無法妥善解決實務問題
直到突然應用圖像學習方法跟無限的腦內風暴,結合設計小圖跟比喻試圖理解開發的廣袤世界。
志不在得獎,在幫助其他轉行仔散彈搶式的更好理解程式概念:《Secrets of a Buccaneer-Scholar 學習要像加勒比海盜》一書提到像 Internet (蜘蛛網,同網際) 的學習方式,連綿向周遭連結、擴散、延展,慢慢補上知識寶圖中的空白,覓出自己的學習之道。Wehelp Ourselves. Make it heuristic!

第一篇想來討論 HTML, CSS 跟 JavaScript
有些人說 HTML 是結構,CSS 是美化,JavaScript 管互動跟資料邏輯;
或者說 HTML 是骨架, CSS 是衣服,以人體呈現。

但以一個初學 CSS 的朋友來說,可能會覺得 CSS 是美化這個概念異常難以消化。
因為 CSS 可以讓 HTML 結構產生各種空間感,對很多人來說這產生了本質性的不同,
搭配 Flex 甚至可以改變方向性,根本就是完全不ㄧ樣的東西吧?
依照外表來看,HTML 與其說是被美化,不如說本來視覺上就是半成品吧?

要認知 CSS 為何是美化效果,必須要從工程師的角度出發思考。
資料的處理跟更新,只要有 HTML 語意標籤、class 跟 id 等等,就能跟 JavaScript 甚至套上模板,與各種後端語言相親相愛的伺服器渲染(Server-Side Rendering),CSS 不討論偽元素跟些許最新支援的互動效果,根本無法改變資料,充其量只能算小三。

但是對一般人而言,有沒有更好理解的方式呢?

我認為比較好的比喻是
HTML 是房子。
CSS 是裝潢、收納。
裝潢不是只是貼貼壁紙而已(美化),包含了許多改變空間感的裝飾柱(就像保麗龍做成的偽元素 XD)
視覺空間感、材質變化的呈現跟改變,會給整個空間帶來觀感上的全新感受。
這個比喻較為不足的只是,CSS 還當真可以撐開、減少各種空間就是,因此也把收納放進比喻的考慮範圍。

就拿列表製成的導覽列來說

  <nav>
    <h1> Logo </h1>
    <ul>
      <li> Cards </li>
      <li> About </li>
      <li> Contacts </li>
    </ul>
  </nav>
  <div class="line"></div>

加上 css 之前
先稱為原始 A 狀態
https://ithelp.ithome.com.tw/upload/images/20230916/20122747xKRYX3iVW2.png

    nav {
      display: flex;
      justify-content: space-between;
      width: 1200px;
      margin: auto;
    }

    ul {
      list-style: none;
      display: flex;
      gap: 20px;
    }

    .line {
      width: 100%;
      height: 1px;
      background-color: black;
    }

加上 css 之後
成為簡單美化 B 狀態(基本 CSS 排版)
https://ithelp.ithome.com.tw/upload/images/20230916/20122747HMPK6TBabu.png

對一般人來說,列表跟導覽列幾乎是完全不同的東西了。
如果再加上更完整的樣式,微調 html :

    * {
      margin: 0;
      padding: 0;
    }

    header {
      display: flex;
      flex-direction: column;
      background-color: #b7efff;
      height: 100px;
    }

    nav {
      display: flex;
      justify-content: space-between;
      align-items: center;
      width: 1200px;
      margin: auto;

    }

    ul {
      list-style: none;
      display: flex;
      gap: 20px;
      color: rgb(115, 14, 14);
    }

    .line {
      width: 100%;
      border-top: 1px dotted dodgerblue;
    }

    h1:hover {
      color: firebrick;
    }
  <header> // 加上 header
   <nav>
     <h1> Logo </h1>
     <ul>
       <li> Cards </li>
       <li> About </li>
       <li> Contacts </li>
     </ul>
   </nav>
   <div class="line"></div>
 </header> // 加上 header

暫且稱為精緻美化 C 狀態
https://ithelp.ithome.com.tw/upload/images/20230917/20122747zgmbM05WkL.png
到這個地步的話,多數人只會感受到從 B 到 C 的過程稱為美化(樣式、微調)
但是其實 A 到 B 的排版、美化才是重頭戲。
如果是從 A(Html) 到 C(多寫幾行CSS,從排版B,到樣式C)
可能根本看不出來喔?
因為需要程式思維,才能理解他們的資料格式跟背後運作是什麼,亦即各種語意標籤、一個列表與幾個父元素
抽屜共同構成。


下一篇
JavaScript 定義:var 怎麼還在啊?
系列文
轉行猴子碰碰車:網站開發一口酥4
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言